﻿using Grpc.Net.Client;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Zhaoxi.GrpcService;

namespace Zhaoxi.GrpcClient
{
	public class MyConsul
	{

		public static void ShowAsync()
		{
			while (true)
			{
				try
				{
					//除了特殊断电的情况,除了redis挂了，
					//造成本来节点已经挂了，但是我们还是去请求了这个挂了的节点
				   //110   
					var url = RedisHelper.GetUrl();
					// 100  //尽可能的减少错误
					Console.WriteLine(url);

				  //当我做负载均衡之后，再做一次验证//redis
					using (var channel = GrpcChannel.ForAddress(url))
					{
					 // 如果你真的实践了，你会发现，补偿重试，

					// 负荷运动了  
					// 操作数据库
					//利和弊你们自个选  

					 // 有问题，提问题
					 //

						// 服务降级

					// 如果我去请求一个服务，
				   // 当这个服务给我抛异常，或者，我们没有请求成功，或者拒绝我们
				   // 连续请求三次  ，知道原理，知道原理

						//  C  
						// 有问题可以
						// 不要想太多，也不要想太少 
					// 我猜测你们在测试consul的时候，也会存在这样问题
						var client = new Greeter.GreeterClient(channel);
						var reply = client.SayHello(new HelloRequest { Name = "Clay老师" });
						Console.WriteLine("服务端说: " + reply.Message);
					}
				}
				catch (Exception ex)
				{
					Console.WriteLine(ex.Message);
				}

				Task.Delay(1000).Wait();
			}

		}
	}
}
